package com.dh.leetcode.k1;

import org.junit.Assert;
import org.junit.Test;

/**
 * @ClassName: _1603_design_parking_system
 * @Description: 1603. 设计停车系统
 * 请你给一个停车场设计一个停车系统。停车场总共有三种不同大小的车位：大，中和小，每种尺寸分别有固定数目的车位。
 * <p>
 * 请你实现 ParkingSystem 类：
 * <p>
 * ParkingSystem(int big, int medium, int small) 初始化 ParkingSystem 类，三个参数分别对应每种停车位的数目。
 * bool addCar(int carType) 检查是否有 carType 对应的停车位。 carType 有三种类型：大，中，小，分别用数字 1， 2 和 3 表示。
 * 一辆车只能停在  carType 对应尺寸的停车位中。如果没有空车位，请返回 false ，否则将该车停入车位并返回 true 。
 * <p>
 * https://leetcode-cn.com/problems/design-parking-system/
 * @Author: shouzimu
 * @Date: 2021/3/19 9:50
 */
public class _1603_design_parking_system {

    /**
     * 一开始用map 8%
     * 后面看大佬们用数组。。
     */
    class ParkingSystem {

        int[] park = new int[3];

        public ParkingSystem(int big, int medium, int small) {
            park[0] = big;
            park[1] = medium;
            park[2] = small;
        }

        public boolean addCar(int carType) {
            return park[carType - 1]-- > 0;
        }
    }

    @Test
    public void ParkingSystemTest() {
        ParkingSystem parkingSystem = new ParkingSystem(1, 1, 0);
        Assert.assertEquals(true, parkingSystem.addCar(1));
        Assert.assertEquals(true, parkingSystem.addCar(2));
        Assert.assertEquals(false, parkingSystem.addCar(3));
        Assert.assertEquals(false, parkingSystem.addCar(1));
    }
}
